import pandas as pd
import os

# 创建测试用例数据
def generate_ai_role_simulation_test_cases():
    # 测试用例数据
    test_cases = [
        {
            '测试用例ID': 'TC001',
            '测试功能': '角色选择功能',
            '测试描述': '验证用户是否能够成功选择AI角色',
            '输入数据': '点击角色列表中的任意角色',
            '预期结果': '成功选择角色，页面显示所选角色信息',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '高'
        },
        {
            '测试用例ID': 'TC002',
            '测试功能': '对话输入功能',
            '测试描述': '验证用户是否能够输入对话内容',
            '输入数据': '在对话输入框中输入文本"你好"',
            '预期结果': '输入框正确显示输入内容',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '高'
        },
        {
            '测试用例ID': 'TC003',
            '测试功能': 'AI回复功能',
            '测试描述': '验证AI角色是否能够对用户输入做出回复',
            '输入数据': '输入问题并发送',
            '预期结果': 'AI在5秒内给出相关回复',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '高'
        },
        {
            '测试用例ID': 'TC004',
            '测试功能': '角色切换功能',
            '测试描述': '验证用户是否能够在对话中切换AI角色',
            '输入数据': '选择新角色并确认切换',
            '预期结果': '成功切换角色，对话历史保留或清空（根据设计）',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '中'
        },
        {
            '测试用例ID': 'TC005',
            '测试功能': '对话历史记录',
            '测试描述': '验证对话历史是否正确保存和显示',
            '输入数据': '进行多轮对话',
            '预期结果': '所有对话内容按时间顺序正确显示',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '中'
        },
        {
            '测试用例ID': 'TC006',
            '测试功能': '清空对话功能',
            '测试描述': '验证用户是否能够清空对话历史',
            '输入数据': '点击清空对话按钮',
            '预期结果': '对话历史被清空，界面回到初始状态',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '中'
        },
        {
            '测试用例ID': 'TC007',
            '测试功能': '响应超时处理',
            '测试描述': '验证系统对AI响应超时的处理',
            '输入数据': '发送问题后等待超过10秒',
            '预期结果': '系统显示超时提示或重试选项',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '低'
        },
        {
            '测试用例ID': 'TC008',
            '测试功能': '角色个性化设置',
            '测试描述': '验证用户是否能够自定义AI角色的属性',
            '输入数据': '修改角色的名称、性格等属性',
            '预期结果': '设置成功保存，AI行为符合新的设定',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '中'
        },
        {
            '测试用例ID': 'TC009',
            '测试功能': '多轮对话连贯性',
            '测试描述': '验证AI在多轮对话中是否保持上下文连贯性',
            '输入数据': '进行包含上下文引用的多轮对话',
            '预期结果': 'AI回复能够正确引用之前的对话内容',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '高'
        },
        {
            '测试用例ID': 'TC010',
            '测试功能': '错误输入处理',
            '测试描述': '验证系统对特殊字符和超长输入的处理',
            '输入数据': '输入包含特殊字符或超长文本',
            '预期结果': '系统能够正确处理或给出适当提示',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '低'
        },
        {
            '测试用例ID': 'TC011',
            '测试功能': '页面响应式布局',
            '测试描述': '验证应用在不同屏幕尺寸下的显示效果',
            '输入数据': '调整浏览器窗口大小',
            '预期结果': '界面元素自适应调整，保持良好可读性',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '中'
        },
        {
            '测试用例ID': 'TC012',
            '测试功能': '角色信息展示',
            '测试描述': '验证AI角色信息是否完整准确展示',
            '输入数据': '查看角色详情页面',
            '预期结果': '角色的名称、描述、能力等信息完整显示',
            '实际结果': '',
            '测试状态': '未执行',
            '优先级': '低'
        }
    ]
    
    # 创建DataFrame
    df = pd.DataFrame(test_cases)
    
    # 生成Excel文件
    excel_file = 'AI角色模拟应用测试用例.xlsx'
    df.to_excel(excel_file, index=False)
    
    print(f"测试用例已成功生成到文件: {excel_file}")
    print(f"共生成 {len(test_cases)} 条测试用例")

if __name__ == "__main__":
    # 检查pandas和openpyxl是否安装
    try:
        import pandas as pd
        try:
            import openpyxl
        except ImportError:
            print("正在安装openpyxl库...")
            os.system('pip install openpyxl')
        
        generate_ai_role_simulation_test_cases()
    except ImportError:
        print("正在安装pandas库...")
        os.system('pip install pandas openpyxl')
        # 重新导入并执行
        import pandas as pd
        generate_ai_role_simulation_test_cases()